package top.hymsk.ecommerce.dao.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import top.hymsk.ecommerce.pojo.DO.OrderBuyerOverviewDO;
import top.hymsk.ecommerce.pojo.DO.OrderOverviewDO;
import top.hymsk.ecommerce.pojo.DTO.PlaceProductDTO;
import top.hymsk.ecommerce.pojo.PO.mysql.OrderPO;

import java.util.List;

/**
 * @author 花于陌上开
 */
@Mapper
public interface OrderMapper {
    List<OrderBuyerOverviewDO> getOrderListByUserId(@Param("userId") Integer userId, @Param("begin") Integer begin);

    List<OrderOverviewDO> getOrderListByStoreId(@Param("storeId") Integer storeId, @Param("begin") Integer begin);

    OrderOverviewDO getOrderByBuyer(@Param("userId") Integer userId, @Param("orderId") Integer orderId);

    OrderOverviewDO getOrderBySeller(@Param("storeId") Integer storeId, @Param("orderId") Integer orderId);

    /*修改订单状态*/
    Boolean updateOrderStatusByOrderId(@Param("orderId") Integer orderId, @Param("status") Integer status);

    Boolean changeOrderGoodStatusByOrderId(@Param("orderId") Integer orderId, @Param("originStatus") Integer originStatus, @Param("status") Integer status);

    Boolean changeOrderGoodStatusByOrderIdAndStoreId(@Param("orderId") Integer orderId,@Param("storeId") Integer storeId, @Param("originStatus") Integer originStatus, @Param("status") Integer status);

    Boolean updateOrderGoodStatusByOrderId(@Param("orderId") Integer orderId, @Param("status") Integer status);

    Boolean updateOrderGoodStatusByOrderAndProductId(@Param("orderId") Integer orderId,@Param("productId") Integer productId, @Param("status") Integer status);

    /*获取订单数量*/
    Integer getOrderNumberByUserId(@Param("userId") Integer userId);
    Integer getOrderNumberByStoreId(@Param("storeId") Integer storeId);

    Integer getOrderStatus(@Param("orderId") Integer orderId);

    Integer getOrderGoodStatus(@Param("orderId") Integer orderId, @Param("productId") Integer productId);

   /*插入新订单*/
    Boolean insertNewOrder(@Param("order") OrderPO order);
    /*插入新评论*/
    Boolean insertNewComment(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("orderId") Integer orderId, @Param("createTime") Long createTime, @Param("star") Double star, @Param("content") String content);
    /*插入新物流*/
    Boolean insertNewExpress(@Param("orderId") Integer orderId, @Param("productIdList") List<Integer> productIdList, @Param("expressNumber") String expressNumber);

    /*解析购物信息*/
    List<PlaceProductDTO> analysisPlaceProduct(@Param("placeProductIdList") List<Integer> placeProductIdList);

    Boolean insertNewOrderGoods(@Param("orderId") Integer orderId,@Param("placeProductList") List<PlaceProductDTO> placeProductList, @Param("status") Integer status);

}
